[アップデート] Amazon LightsailがCloudFormationに対応したのでYAMLでWordPress環境を作ってみた
こんにちは。CX事業本部MAD事業部のYui(@MayForBlue)です。
下記のAWS公式ブログで紹介されているとおり、Amazon LightsailがCloudFormationに対応したので、早速CloudFormationテンプレートを使ってWordPress環境を作ってみました!
Amazon Lightsail がインスタンス、ディスク、データベースの AWS CloudFormation をサポート
Amazon Lightsail とは
Amazon Lightsail(以下、Lightsail) とは、AWS が提供するVPSサービスです。
WordPress、Windows、LAMP、Nginx など、事前に組み込まれたOSやアプリケーション環境を数クリックで構築することができます。
Lightsail について詳しく学びたい方は以下のYouTubeがおすすめです。
簡易サーバー・Amazon Lightsailの使い所を解説!AWSのコンピューティングサービス紹介
また、今回と同じ環境を手作業で作成する場合は下記のブログをご参照ください。
Amazon Lightsailを使って15分でWordPressを構築してみた
AWS CloudFormation とは
AWS CloudFormation(以下、CloudFormation)はインフラをコードで構築、管理できるAWSのInfrastracture as Codeのサービスです。
CloudFormation について詳しく学びたい方は以下のブログがおすすめです。
【CloudFormation入門】5分と6行で始めるAWS CloudFormationテンプレートによるインフラ構築
やってみる
Lightsail の BlueprintId / BundleId を確認する
CloudFormation で Lightsail のサーバーを作成するには BlueprintId(どのOSやアプリケーションを利用するか) と BundleId(Lightsailのプラン)を指定する必要があります。
以下のコマンドで東京リージョン(ap-northeast-1)で利用できる BlueprintId / BundleId をそれぞれ確認することができます。
BlueprintId
$ aws lightsail get-blueprints --region ap-northeast-1 --query 'blueprints[].{blueprintId:blueprintId,name:name,group:group,productUrl:productUrl,platform:platform}' --output table --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | GetBlueprints | +--------------------------------------+-----------------------+--------------------------------+-------------+-----------------------------------------------------+ | blueprintId | group | name | platform | productUrl | +--------------------------------------+-----------------------+--------------------------------+-------------+-----------------------------------------------------+ | windows_server_2019 | windows_2019 | Windows Server 2019 | WINDOWS | https://aws.amazon.com/marketplace/pp/B07QZ4XZ8F | | windows_server_2016 | windows_2016 | Windows Server 2016 | WINDOWS | https://aws.amazon.com/marketplace/pp/B01M7SJEU7 | | windows_server_2012 | windows_2012 | Windows Server 2012 R2 | WINDOWS | https://aws.amazon.com/marketplace/pp/B00KQOWCAQ | | windows_server_2016_sql_2016_express| windows_2016_sql_exp | SQL Server 2016 Express | WINDOWS | https://aws.amazon.com/marketplace/pp/B01MAZHH98 | | amazon_linux_2 | amazon_linux_2 | Amazon Linux 2 | LINUX_UNIX | https://aws.amazon.com/amazon-linux-2/ | | amazon_linux | amazon-linux | Amazon Linux | LINUX_UNIX | https://aws.amazon.com/marketplace/pp/B00CIYTQTC | | ubuntu_20_04 | ubuntu_20 | Ubuntu | LINUX_UNIX | https://aws.amazon.com/marketplace/pp/B087QQNGF1 | | ubuntu_18_04 | ubuntu_18 | Ubuntu | LINUX_UNIX | https://aws.amazon.com/marketplace/pp/B07CQ33QKV | | ubuntu_16_04_2 | ubuntu | Ubuntu | LINUX_UNIX | https://aws.amazon.com/marketplace/pp/B01JBL2M0O | | debian_10 | debian_10 | Debian | LINUX_UNIX | https://aws.amazon.com/marketplace/pp/B0859NK4HC | | debian_9_13 | debian_9 | Debian | LINUX_UNIX | https://aws.amazon.com/marketplace/pp/B073HW9SP3 | | debian_8_7 | debian | Debian | LINUX_UNIX | https://aws.amazon.com/marketplace/pp/B00WUNJIEE | | freebsd_12 | freebsd | FreeBSD | LINUX_UNIX | https://aws.amazon.com/marketplace/pp/B07L6QV354 | | opensuse_15_2 | opensuse | openSUSE | LINUX_UNIX | https://aws.amazon.com/marketplace/pp/B01N4R3GJI | | centos_8 | centos_8 | CentOS | LINUX_UNIX | https://aws.amazon.com/marketplace/pp/B08KYLN2CG | | centos_7_2009_01 | centos | CentOS | LINUX_UNIX | https://aws.amazon.com/marketplace/pp/B00O7WM7QW | | wordpress | wordpress | WordPress | LINUX_UNIX | https://aws.amazon.com/marketplace/pp/B00NN8Y43U | | wordpress_multisite | wordpress_multisite | WordPress Multisite | LINUX_UNIX | https://aws.amazon.com/marketplace/pp/B00NN8XE6S | | lamp_7 | lamp_7 | LAMP (PHP 7) | LINUX_UNIX | https://aws.amazon.com/marketplace/pp/B072JNJZ5C | | nodejs | node | Node.js | LINUX_UNIX | https://aws.amazon.com/marketplace/pp/B00NNZUAKO | | joomla | joomla | Joomla | LINUX_UNIX | https://aws.amazon.com/marketplace/pp/B00NNZUP54 | | magento | magento | Magento | LINUX_UNIX | https://aws.amazon.com/marketplace/pp/B00NNZTA6Y | | mean | mean | MEAN | LINUX_UNIX | https://aws.amazon.com/marketplace/pp/B00NO1HJ56 | | drupal | drupal | Drupal | LINUX_UNIX | https://aws.amazon.com/marketplace/pp/B00NNZSUMO | | gitlab | gitlab | GitLab CE | LINUX_UNIX | https://aws.amazon.com/marketplace/pp/B00NNZU5PO | | redmine | redmine | Redmine | LINUX_UNIX | https://aws.amazon.com/marketplace/pp/B00NNZUVHQ | | nginx | nginx | Nginx | LINUX_UNIX | https://aws.amazon.com/marketplace/pp/B00NPHKI3Y | | ghost_bitnami | ghost_bitnami | Ghost | LINUX_UNIX | https://aws.amazon.com/marketplace/pp/B00NPHLY8W | | django_bitnami | django_bitnami | Django | LINUX_UNIX | https://aws.amazon.com/marketplace/pp/B00NNZTDNO | | prestashop_bitnami | prestashop_bitnami | PrestaShop | LINUX_UNIX | https://aws.amazon.com/marketplace/pp/B00NPHLR4I | | plesk_ubuntu_18_0_34 | plesk_ubuntu | Plesk Hosting Stack on Ubuntu | LINUX_UNIX | https://aws.amazon.com/marketplace/pp/B077MJL7Z2 | | cpanel_whm_linux | cpanel_whm_linux | cPanel & WHM for Linux | LINUX_UNIX | https://aws.amazon.com/marketplace/pp/B07RRX2TVV | +--------------------------------------+-----------------------+--------------------------------+-------------+-----------------------------------------------------+
BundleId
$ aws lightsail get-bundles --region ap-northeast-1 --query 'bundles[].{price:price,cpuCount:cpuCount,ramSizeInGb:ramSizeInGb,diskSizeInGb:diskSizeInGb,bundleId:bundleId,instanceType:instanceType,supportedPlatforms:supportedPlatforms[0]}' --output table --------------------------------------------------------------------------------------------------------------- | GetBundles | +-----------------+-----------+---------------+---------------+--------+---------------+----------------------+ | bundleId | cpuCount | diskSizeInGb | instanceType | price | ramSizeInGb | supportedPlatforms | +-----------------+-----------+---------------+---------------+--------+---------------+----------------------+ | nano_2_0 | 1 | 20 | nano | 3.5 | 0.5 | LINUX_UNIX | | micro_2_0 | 1 | 40 | micro | 5.0 | 1.0 | LINUX_UNIX | | small_2_0 | 1 | 60 | small | 10.0 | 2.0 | LINUX_UNIX | | medium_2_0 | 2 | 80 | medium | 20.0 | 4.0 | LINUX_UNIX | | large_2_0 | 2 | 160 | large | 40.0 | 8.0 | LINUX_UNIX | | xlarge_2_0 | 4 | 320 | xlarge | 80.0 | 16.0 | LINUX_UNIX | | 2xlarge_2_0 | 8 | 640 | 2xlarge | 160.0 | 32.0 | LINUX_UNIX | | nano_win_2_0 | 1 | 30 | nano | 8.0 | 0.5 | WINDOWS | | micro_win_2_0 | 1 | 40 | micro | 12.0 | 1.0 | WINDOWS | | small_win_2_0 | 1 | 60 | small | 20.0 | 2.0 | WINDOWS | | medium_win_2_0 | 2 | 80 | medium | 40.0 | 4.0 | WINDOWS | | large_win_2_0 | 2 | 160 | large | 70.0 | 8.0 | WINDOWS | | xlarge_win_2_0 | 4 | 320 | xlarge | 120.0 | 16.0 | WINDOWS | | 2xlarge_win_2_0| 8 | 640 | 2xlarge | 240.0 | 32.0 | WINDOWS | +-----------------+-----------+---------------+---------------+--------+---------------+----------------------+
今回は BlueprintId に wordpress
、BundleId に nano_2_0
を指定します。
参考:AWS CLI コマンドを使用して Lightsail インスタンスを管理する方法を教えてください。
CloudFormation テンプレート
今回はWordPressが事前に設定されたインスタンスに静的IPアドレスがアタッチされている環境を用意します。
以下の公式ドキュメントを参考にテンプレートを用意しました。
AWS CloudFormation - AWS::Lightsail::Instance
AWS CloudFormation - AWS::Lightsail::StaticIp
用意したテンプレートは以下です。
AWSTemplateFormatVersion: "2010-09-09" Description: Create WordPress on Amazon Lightsail Resources: WordPressServer: Type: AWS::Lightsail::Instance Properties: BlueprintId: wordpress BundleId: nano_2_0 InstanceName: WordPressServer WordPressIp: Type: AWS::Lightsail::StaticIp Properties: AttachedTo: WordPressServer StaticIpName: WordPressIp Outputs: WordPressIp: Description: WordPressIp Value: !GetAtt WordPressIp.IpAddress
動作確認
上記テンプレートをCloudFormationに流すと無事に構築が完了しました。
出力タブに表示された静的IPアドレスをコピーしてブラウザのURL欄に貼りつけます。
以下のとおりWordPress環境が構築できていることが確認できます。
さいごに
Amazon Lightsail環境をコードで管理したい場合や環境を複製したいといったケースに嬉しいアップデートをご紹介しました。
このブログがどなたかのお役に立てば幸いです。
以上、CX事業本部MAD事業部のYui(@MayForBlue)でした!
参考リンク
Amazon Lightsail がインスタンス、ディスク、データベースの AWS CloudFormation をサポート
簡易サーバー・Amazon Lightsailの使い所を解説!AWSのコンピューティングサービス紹介
Amazon Lightsailを使って15分でWordPressを構築してみた
【CloudFormation入門】5分と6行で始めるAWS CloudFormationテンプレートによるインフラ構築
AWS CloudFormation - AWS::Lightsail::Instance
AWS CloudFormation - AWS::Lightsail::StaticIp